# 在Python中六种内建的序列包括：
#
# 1、列表；
#
# 2、元组；（不可修改的列表）
#
# 3、字符串；
#
# 4、Unicode字符串；
#
# 5、buffer对象
#
# 6、xrange对象

# 通用的7种序列操作包括：
#
# 1、索引(indexing)
#
# 2、分片(sliceing)
#
# 3、加(adding)
#
# 4、乘(multiplying)
#
# 5、检查某个元素是否属于这序列(index)
#
# 6、计算序列长度(len)
#
# 7、找出最大元素和最小元素(min/max)


# 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置，或索引，第一个索引是0，第二个索引是1，依此类推。
#
# Python有6个序列的内置类型，但最常见的是列表和元组


# 创建列表


list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5]
list3 = ["a", "b", "c", "d"]

# 访问列表中的值
item = list1[0]
print(f"list1[0] 输出 {list1} 下标是0的数据：", item)
item = list1[0: 3]
print(f"list1[0: 3] 输出 {list1} 下标从0开始，输出三个数据：", item)

# 更新列表
list1.append("sicence")
print(f"{list1} 添加了 ‘sicence’元素")

# 删除列表元素
del list1[4]
print(f"{list1} 删除了 ‘sicence’元素")

# Python列表脚本操作符
# Python 表达式	                    结果	                            描述
# len([1, 2, 3])	                3	                            长度
# [1, 2, 3] + [4, 5, 6]	            [1, 2, 3, 4, 5, 6]	            组合
# ['Hi!'] * 4	                    ['Hi!', 'Hi!', 'Hi!', 'Hi!']	重复
# 3 in [1, 2, 3]	                True	                        元素是否存在于列表中
# for x in [1, 2, 3]: print x,	    1 2 3	                        迭代

# 获取列表长度
item = len(list1)
print(f"{list1} 的长度是：", item)

# 将两个列表合并，数据可以重复
item = list1 + list2
print(f"{list1} + {list2} 的结果是：", item)

# 输出多次列表，会输出到一个列表中，数据可以重复
item = list1 * 2
print(f"{list1}输出两次：", item)

# Python列表截取
# Python    表达式	                结果	描述
# L[2]	    'Taobao'	            读取列表中第三个元素
# L[-2]	    'Runoob'	            读取列表中倒数第二个元素
# L[1:]	    ['Runoob', 'Taobao']	从第二个元素开始截取列表
item = list1[-2]
print(f"{list1}读取列表中倒数第二个元素：", item)
item = list1[1:]
print(f"{list1}从第二个元素开始截取列表：", item)

# Python列表函数&方法
# Python包含以下函数:
#
# 序号	函数
# 1	    cmp(list1, list2)
# 比较两个列表的元素
# item = cmp(list1, list2)
# print(item)

# 2	    len(list)
# 列表元素个数
item = len(list1)
print(f"{list2} 的元素个数是：", item)

# 3	    max(list)
# 返回列表元素最大值
item = max(list2)
print(f"{list2} 中最大值：", item)

# 4	    min(list)
# 返回列表元素最小值
item = min(list2)
print(f"{list2} 中最小值：", item)

# 5	    list(seq)
# 将元组转换为列表
t = (1, 2, 3, 'c')
item = list(t)
print(f"将元组{t}转成列表：", item)
print()

# 序号	方法
# 1	list.append(obj)
# 在列表末尾添加新的对象
list1.append("sicence")
print(f"{list1} 添加了 ‘sicence’元素")

# 7	list.remove(obj)
# 移除列表中某个值的第一个匹配项
list1.remove("sicence")
print(f"{list1} 删除了 ‘sicence’元素")

# 2	list.count(obj)
# 统计某个元素在列表中出现的次数
item = list1.count("physics")
print(f"{list1} 中 “physics”元素出现个数：", item)

# 3	list.extend(seq)
# 在列表末尾一次性追加另一个序列中的多个值（用新列表扩展原来的列表）
l = [1, '2', 4]
l.extend(list2)
print(f"{l} + {list2} 的结果是：", l)

# 4	list.index(obj)
# 从列表中找出某个值第一个匹配项的索引位置
item = list1.index(2000)
print(f"{list1} 中 2000 元素的索引：", item)

# 5	list.insert(index, obj)
# 将对象插入列表
l = [1, '2', 4]
l.insert(1, "b")
print(f"{l} 在 索引是 1 的位置插入一个‘b’")

# 6	list.pop([index=-1])
# 移除列表中的一个元素（默认最后一个元素），并且返回该元素的值
item = list3.pop(2)
print(f"{list3} 移除位置是2的元素，返回该元素的值： ", item)

# 8	list.reverse()
# 反向列表中元素
list2.reverse()
print(f"{list2} 元素反转")

# 9	list.sort(cmp=None, key=None, reverse=False)
# 对原列表进行排序
l = [4, 2, 5, 90, 1]
l.sort()
print(f"{l} 排序")
l2 = ['g', 'c', 'z', 'a', 'j']
l2.sort()
l2.reverse()
print(f"{l2} 排序")
